package controller;

/**
 * An interface to be used by CommandProcessor, which takes user
 * commands as inputs and changes the view/visualization based on these inputs.
 * 
 * @author Ben Schwab
 * @param <V>
 * @param <M>
 */
public interface Commandable<V, M> {

    /**
     * Takes a String command from the user and determines how to change the GUI
     * based on the user input.
     * 
     * @param command string taken from user input
     */
    void processCommand (String command);

    /**
     * 
     * @param view view
     */
    void setView (V view);

    /**
     * 
     * @param model model
     */
    void setModel (M model);

}
